磁盘RDAID
==RAID 磁盘阵列 阵列卡==
1.性能提升,理论上是单块磁盘的N倍
2.冗余,提升安全性
3.得到更高的容量
==RAID级别及特点==
数量 容量 性能 冗余 场景
RAID0 2(单) N*单块 最快 0 只要求速度,不要求安全
条带卷
RAID1 只能2 1/2 写最慢,读一般 50% 只要求安全,不要求速度
镜像卷
RAID5 3块+ 浪费1块 写稍慢,读ok 只能坏一块 对安全性能要求都不高
校验卷
RAID10
镜像条带卷 4块 1/2 读写很快 50% 对安全性能要求都很高
==对比==
性能对比
RAID0 ===》 RAID10 ===》 RAID5 ===》RAID1
冗余对比
RAID1 ===》RAID10 ===》RAID5 ===》RAID0
价格对比
RAID10 ===》 RAID1 ===》 RAID5 ===》RAID0
LVM 逻辑卷管理
RAID在最底层,LVM在其上面又做了一层逻辑层
PV 物理卷 physical volume 磁盘或者磁盘分区,通过一个命令让其成为物理卷
VG 逻辑卷组 volume group 多个PV组成的。
LV 逻辑卷 logical volume逻辑卷组切割而成,最多由65534个PE组成
PE 基本单元 physical extend 逻辑卷的最小数据单位,4MB
磁盘相关故障
1.block满了
第一步
检查什么原因导致的
[root@qls ~]# df -h
第二步
找到这个导致磁盘空间不足的文件或者目录
[root@qls ~]# du -sh /* |grep G
第三步
确认这个文件是否重要,确认之后再处理
[root@qls ~]# rm -f /root/test_mbr/test.log
删除之后,磁盘空间还是满的原因如下:
-文件进程调用为零 lsof [root@qls ~]# lsof |grep delete
-硬链接数量为零文件才被真正的删除
2.inode满了
第一步
检查报错原因
[root@qls ~]# df -i
第二步
怎么找到这些文件
[root@qls ~]# find /opt -type d -size +1M |xargs ls -dlh
第三步
确认这些文件重不重要,在处理
[root@qls ~]# ll /opt/data3 |head
定时任务
==crond linux系统中自带一个定时任务==
种类
系统定时任务:日志切割,定时清理文件,搜集系统信息
用户定时任务:同步时间,定时备份,执行脚本等等
[root@qls ~]# cat /etc/crontab
SHELL=/bin/bash #定时任务执行的命令解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin #命令的路径
MAILTO=root #接收邮件的用户
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59) #分钟的写法
# | .------------- hour (0 - 23) #24小时制
# | | .---------- day of month (1 - 31) #天数
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... #月份
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | | #周 0或者7 是周日
# * * * * * user-name command to be executed
用户 命令
==定时任务的六个域 :分时日月周 命令==
存放定时任务的目录
[root@qls ~]# ll /var/spool/cron/
/var/spool/cron/root #这是root用户的定时任务
[root@qls ~]# ll /var/log/cron #定时任务的日志
/var/spool/mail/root #用户邮件内容
可以直接使用
crontab -e ==== vim /var/spool/cron/root(创建新的定时任务)
crontab -l ==== cat /var/spool/cron/root(查看创建的定时任务)
案例
案例一:
#编写一个定时任务
每分钟向oldboy.log文件追加时间信息 date +%T
[root@qls ~]# crontab -l
* * 21 * 5 echo $(date +\%T) >>/root/oldboy.log
案例二:
每分钟 定时向时间服务器同步系统时间
定时执行时,会一直发送邮件给用户,最后会导致文件过大
[root@qls ~]# ll /var/spool/mail/root
-rw-------. 1 root mail 8859 Nov 21 14:17 /var/spool/mail/root
解决:
停掉邮件服务
[root@qls ~]# systemctl stop postfix
#发现邮件已经不再接收
[root@qls ~]# ll /var/spool/mail/root
#邮件服务停止后,会发现/var/spool/postfix/maildrop/目录下会生成大量的小文件
[root@qls ~]# ll /var/spool/postfix/maildrop/
total 16
-rwxr--r--. 1 root postdrop 603 Nov 21 14:21 1E91F604B7CD
-rwxr--r--. 1 root postdrop 604 Nov 21 14:22 4CEC86056656
-rwxr--r--. 1 root postdrop 604 Nov 21 14:19 AEDD46056640
-rwxr--r--. 1 root postdrop 603 Nov 21 14:20 DF06A6056653
#规范书写定时任务
* * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null
#邮件服务在开启时,不会再向/var/spool/mail/root写入内容,不会再次邮件给用户
[root@qls ~]# ll /var/spool/mail/root
#停掉邮件服务,同样不会再次生成小文件
[root@qls ~]# systemctl stop postfix
[root@qls ~]# ll /var/spool/postfix/maildrop/
总结:
使用命令的时候,要使用绝对路径
将定时的结果不管正确和错误的都要定向到空或者到一个文件中就不会在发送邮件
案例三:
写个定时备份脚本,打包备份/etc/目录,将其备份到/backup目录。
#创建一个脚本存放目录
[root@qls ~]# mkdir /server/scripts -p
#脚本如下
[root@qls ~]# cat /server/scripts/back.sh
#!/bin/bash
#创建备份目录
mkdir -p /backup
#打包压缩/etc/目录
Ip=$(ifconfig ens33 |awk 'NR==2{print $2}')
Date=$(date +%F)
cd / && tar czf backup/etc_${Ip}_${Date}.tar.gz etc/ && cd
#删除7天以前的备份数据
find /backup -type f -mtime +6 -delete
#手动执行没有问题
[root@qls ~]# sh back.sh
[root@qls ~]# ll /backup/
total 11044
-rw-r--r--. 1 root root 11308336 Nov 21 14:39 etc_10.0.0.100_2019-11-21.tar.gz
#编写定时任务
* * * * * /bin/bash /server/scripts/back.sh &>/dev/null
#测试后的脚本
[root@qls ~]# cat /server/scripts/back.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#创建备份目录
mkdir -p /backup
#打包压缩/etc/目录
Ip=$(ifconfig ens33 |awk 'NR==2{print $2}')
Date=$(date +%F_%M)
cd / && tar czf backup/etc_${Ip}_${Date}.tar.gz etc/ && cd
#删除7天以前的备份数据
find /backup -type f -mtime +6 -delete
#根据不同时间执行脚本
[root@qls ~]# for i in {11..21};do date -s "201911$i"; sh /server/scripts/back.sh ;done
总结:
定时任务同样找不到系统上面的命令,ifconfig ntpdate ip等
案例四:
定时发情书
#安装软件邮件
[root@qls ~]# yum install mailx -y
[root@qls ~]# vim /etc/mail.rc
set from=xxxxxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxxxxx@qq.com
set smtp-auth-password=授权码xxx
set smtp-auth=login
set smtp=smtps://smtp.qq.com:465
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
(将上面这些内容放在这个文件的末尾,然后把xxxx全部改成相对应的信息即可)
#发送邮件测试
[root@qls ~]# echo "hello" | mail -s "测试" 335317638@qq.com
[root@qls ~]# Error in certificate: Peer's certificate issuer is not recognized.(正常报错,暂且忽略,老师未讲如何处理)
#测试发情书
[root@qls ~]# mail -s "致最亲爱的小姐姐" xxxx@qq.com < qingshu.txt
[root@qls ~]# Error in certificate: Peer's certificate issuer is not recognized.
[root@qls ~]#
#编写脚本
[root@qls scripts]# cat faqingshu.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
qingshu=$(ls -1 /root/qingshu |head -1)
mail -s "致最亲爱的小姐姐" xxxxx@qq.com < /root/qingshu/$qingshu
rm -f /root/qingshu/$qingshu
#编写定时任务
* * * * * /bin/bash /server/scripts/faqingshu.sh &>/dev/null
==定时任务总结==
定时任务书写流程
1.在命令行上面进行测试
2.执行定时任务最好使用脚本,脚本进行统一路径
3.命令尽量的复制,防止出错
4.使用绝对路径执行命令
5.脚本中有些命令不识别,建议先定义PATH环境变量
6.时间命令的%需要转义
7.执行定时任务把结果定向到空或者指定到一个文件中,防止小文件过多
8.减少没有必要的输出
9.测试定时任务时,先每分钟测试一下,没有问题之后,修改定时任务,修改系统时间进行测试
10.打包压缩时最好使用相对路径